#include <iostream>
#include <string>
#include <regex>

int main()
{
    // std::string str = "/numbers/1234";
    // std::regex reg(R"(/numbers/(\d+))");
    // std::smatch matchs;
    // std::regex_match(str,matchs,reg);
    // for(auto x : matchs)
    // {
    //     std::cout<<x<<std::endl;
    // }
    //  .*表示匹配任意字符
    // std::string url = "GET /root/index.html/login?use=liuhaodon&pass=123456 HTTP/1.1";
    // std::regex reg("(GET|POST|DELETE|HEAD|PUT) .*");
    // std::smatch mathcs;
    // if(!std::regex_match(url,mathcs,reg)) return -1;
    // for(auto& s : mathcs)
    // {
    //     std::cout<<"---------------"<<std::endl;
    //     std::cout<<s<<std::endl;
    // } 
    //[^?]-表示匹配非问号字符，*表示匹配0次或多次;
    // std::string url = "GET /root/index.html/login?use=liuhaodon&pass=123456 HTTP/1.1";
    // std::regex reg("(GET|POST|DELETE|HEAD|PUT) ([^?]*).*");
    // std::smatch mathcs;
    // if(!std::regex_match(url,mathcs,reg)) return -1;
    // for(auto& s : mathcs)
    // {
    //     std::cout<<"---------------"<<std::endl;
    //     std::cout<<s<<std::endl;
    // }

    std::string url = "GET /root/index.html/login?use=liuhaodon&pass=123456 HTTP/1.1";
    std::regex reg("(GET|POST|DELETE|HEAD|PUT) ([^?]*).*");
    std::smatch mathcs;
    if (!std::regex_match(url, mathcs, reg))
        return -1;
    for (auto &s : mathcs)
    {
        std::cout << "---------------" << std::endl;
        std::cout << s << std::endl;
    }
    return 0;
}